<?php
/**
 * 永久素材 管理
 *
 * @author    Alex Xun xunzhibin@expert.com
 * @version   1.0
 * @copyright (C) 2018 Jnexpert Ltd. All rights reserved
 * @file      .\material\controller\v1\Permanent.php
 */

namespace app\material\controller\v1;

use controller\BasicWechat;

/**
 * 永久素材 控制器
 *
 * @author Alex Xun xunzhibin@jnexpert.com
 * @package controller
 */
class Permanent extends BasicWechat
{
    /**
     * 公众号 第三方库 初始化
     *
     * 根据具体所需服务，实例不同的接口类
     *
     * @author Alex Xun xunzhibin@jnexpert.com
     */
    protected function initVendor()
    {
        // 实例化 第三方库
        $this->wechat = new \WeChat\Media($this->config);
    }

    /**
     * 列表
     *
     * 分类型获取永久素材的列表，临时素材不可用
     *
     * @author Alex Xun xunzhibin@jnexpert.com
     */
    public function index()
    {
        // 偏移量
        $offset = 0;
        if(isset($this->data['offset']) && $this->data['offset']) {
            $offset = (int)$this->data['offset'];
        }

        // 数量
        $count = 20;
        if(isset($this->data['count']) && $this->data['count']) {
            $count = (int)$this->data['count'];
        }

        // 查询
        $result = $this->wechat->batchGetMaterial(
            $this->data['type'],
            $offset,
            $count
        );

        // 响应
        return $this->response($result, true);
    }

    /**
     * 新增
     *
     * 通过POST表单，分类型新增永久素材
     *
     * @author Alex Xun xunzhibin@jnexpert.com
     */
    public function create()
    {
        // 视频时，相关信息
        $description = [];
        if(isset($this->data['description']) && $this->data['description']) {
            $description = $this->data['description'];
        }

        // 上传文件
        if(! $this->uploadSaveFile) {
            throw new \think\exception\ValidateException('Upload file not exist');
        }

        // 新增
        $result = $this->wechat->addMaterial(
            $this->uploadSaveFile,
            $this->data['type'],
            $description
        );

        // 响应
        return $this->response($result, true);
    }

    /**
     * 查询
     *
     * 通过media_id，获取对应的永久素材
     *
     * @author Alex Xun xunzhibin@jnexpert.com
     */
    public function read()
    {
        // 查询
        $result = $this->wechat->getMaterial($this->data['media_id']);

        // 响应
        return $this->response($result, true);
    }

    /**
     * 总数
     *
     * 分类型计算永久素材的总数，临时素材不可用
     *
     * @author Alex Xun xunzhibin@jnexpert.com
     */
    public function count()
    {
        // 查询
        $result = $this->wechat->getMaterialCount();

        // 响应
        return $this->response($result, true);
    }

    /**
     * 删除
     *
     * 通过media_id，删除对应的永久素材，临时素材不可用
     *
     * @author Alex Xun xunzhibin@jnexpert.com
     */
    public function delete()
    {
        // 删除
        $result = $this->wechat->delMaterial($this->data['media_id']);

        return $this->response($result);
    }
}
